package com.kakame.codenews.base.web.fast.mapping.nexus;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.kakame.codenews.base.web.annotation.ColumnMapping;
import com.kakame.codenews.base.web.annotation.TableMapping;
import com.kakame.codenews.base.web.cache.UserCache;
import com.kakame.codenews.base.web.fast.mapping.common.User;

/**
 * 用来存放所有的评论
 * @author 何家明  2018年08月02日 13:21:15
 */
@TableMapping("t_nexus_article_comment")
public class ArticleComment implements Serializable {

    private static final long serialVersionUID = 1L;

    @ColumnMapping(column = "id")
    private String id;

    @ColumnMapping(column = "article_id")
    private String articleId;

    @ColumnMapping(column = "comment_content")
    private String commentContent;

    @ColumnMapping(column = "comment_num")
    private Integer commentNum;

    @ColumnMapping(column = "status")
    private String status;

    @ColumnMapping(column = "create_time")
    private Date createTime;

    @ColumnMapping(column = "create_user_id")
    private String createUserId;

    @ColumnMapping(column = "update_time")
    private Date updateTime;

    @ColumnMapping(column = "update_user_id")
    private String updateUserId;

    @ColumnMapping(column = "verify_time")
    private Date verifyTime;

    @ColumnMapping(column = "verify_user_id")
    private String verifyUserId;


    public ArticleComment() {
    }
    public ArticleComment(Builder builder) {
        this.id = builder.id;
        this.articleId = builder.articleId;
        this.commentContent = builder.commentContent;
        this.commentNum = builder.commentNum;
        this.status = builder.status;
        this.createTime = builder.createTime;
        this.createUserId = builder.createUserId;
        this.updateTime = builder.updateTime;
        this.updateUserId = builder.updateUserId;
        this.verifyTime = builder.verifyTime;
        this.verifyUserId = builder.verifyUserId;
    }
	public static Builder create() {
		return new Builder();
	}

	/**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getId() {
		return id;
	}
    /**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param id
	 */
    public void setId(String id) {
		this.id = id;
	}
	/**
	 * 文章id
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getArticleId() {
		return articleId;
	}
    /**
	 * 文章id
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param articleId
	 */
    public void setArticleId(String articleId) {
		this.articleId = articleId;
	}
	/**
	 * 评论内容
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getCommentContent() {
		return commentContent;
	}
    /**
	 * 评论内容
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param commentContent
	 */
    public void setCommentContent(String commentContent) {
		this.commentContent = commentContent;
	}
	/**
	 * 文章评论数
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public Integer getCommentNum() {
		return commentNum;
	}
    /**
	 * 文章评论数
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param commentNum
	 */
    public void setCommentNum(Integer commentNum) {
		this.commentNum = commentNum;
	}
	/**
	 * 数据状态 C 正常 D 删除
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getStatus() {
		return status;
	}
    /**
	 * 数据状态 C 正常 D 删除
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param status
	 */
    public void setStatus(String status) {
		this.status = status;
	}
	/**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public Date getCreateTime() {
		return createTime;
	}
    /**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param createTime
	 */
    public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	/**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getCreateUserId() {
		return createUserId;
	}
    /**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param createUserId
	 */
    public void setCreateUserId(String createUserId) {
		this.createUserId = createUserId;
	}
	/**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public Date getUpdateTime() {
		return updateTime;
	}
    /**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param updateTime
	 */
    public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}
	/**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getUpdateUserId() {
		return updateUserId;
	}
    /**
	 * 
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param updateUserId
	 */
    public void setUpdateUserId(String updateUserId) {
		this.updateUserId = updateUserId;
	}
	/**
	 * 审核时间
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public Date getVerifyTime() {
		return verifyTime;
	}
    /**
	 * 审核时间
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param verifyTime
	 */
    public void setVerifyTime(Date verifyTime) {
		this.verifyTime = verifyTime;
	}
	/**
	 * 审核人
	 * @author 何家明  2018年08月02日 13:21:15
	 * @return
	 */
    public String getVerifyUserId() {
		return verifyUserId;
	}
    /**
	 * 审核人
	 * @author 何家明  2018年08月02日 13:21:15
	 * @param verifyUserId
	 */
    public void setVerifyUserId(String verifyUserId) {
		this.verifyUserId = verifyUserId;
	}

    @Override
	public String toString() {
		return "ArticleComment [id=" + id + ", articleId=" + articleId + ", commentContent=" + commentContent + ", commentNum=" + commentNum + ", status=" + status + ", createTime=" + createTime + ", createUserId=" + createUserId + ", updateTime=" + updateTime + ", updateUserId=" + updateUserId + ", verifyTime=" + verifyTime + ", verifyUserId=" + verifyUserId + "]";
	}
    public static class Builder {
        private String id;
        private String articleId;
        private String commentContent;
        private Integer commentNum;
        private String status;
        private Date createTime;
        private String createUserId;
        private Date updateTime;
        private String updateUserId;
        private Date verifyTime;
        private String verifyUserId;
        /**
	     * 
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param id
	     */
        public Builder id(String id) {
	    	this.id = id;
	        return this;
    	}
        /**
	     * 文章id
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param articleId
	     */
        public Builder articleId(String articleId) {
	    	this.articleId = articleId;
	        return this;
    	}
        /**
	     * 评论内容
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param commentContent
	     */
        public Builder commentContent(String commentContent) {
	    	this.commentContent = commentContent;
	        return this;
    	}
        /**
	     * 文章评论数
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param commentNum
	     */
        public Builder commentNum(Integer commentNum) {
	    	this.commentNum = commentNum;
	        return this;
    	}
        /**
	     * 数据状态 C 正常 D 删除
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param status
	     */
        public Builder status(String status) {
	    	this.status = status;
	        return this;
    	}
        /**
	     * 
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param createTime
	     */
        public Builder createTime(Date createTime) {
	    	this.createTime = createTime;
	        return this;
    	}
        /**
	     * 
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param createUserId
	     */
        public Builder createUserId(String createUserId) {
	    	this.createUserId = createUserId;
	        return this;
    	}
        /**
	     * 
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param updateTime
	     */
        public Builder updateTime(Date updateTime) {
	    	this.updateTime = updateTime;
	        return this;
    	}
        /**
	     * 
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param updateUserId
	     */
        public Builder updateUserId(String updateUserId) {
	    	this.updateUserId = updateUserId;
	        return this;
    	}
        /**
	     * 审核时间
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param verifyTime
	     */
        public Builder verifyTime(Date verifyTime) {
	    	this.verifyTime = verifyTime;
	        return this;
    	}
        /**
	     * 审核人
	     * @author 何家明  2018年08月02日 13:21:15
	     * @param verifyUserId
	     */
        public Builder verifyUserId(String verifyUserId) {
	    	this.verifyUserId = verifyUserId;
	        return this;
    	}

        public ArticleComment build() {
			return new ArticleComment(this);
		}
	}



    // ******************* 扩展 *******************//
    private List<ArticleComment> childList;
    
    private Integer distance;
    
    public String getCreateUserName() {
        User user = UserCache.me().getByUserId(createUserId);
        return user.getUserName();
    }
    public String getUserSmallIcon() {
        User user = UserCache.me().getByUserId(createUserId);
        return user.getUserSmallIcon();
    }
    public List<ArticleComment> getChildList() {
        return childList;
    }
    public void setChildList(List<ArticleComment> childList) {
        this.childList = childList;
    }
    public Integer getDistance() {
        return distance;
    }
    public void setDistance(Integer distance) {
        this.distance = distance;
    }

}
